Virtual machines are a generally well-known concept. Initially, virtual machine (or hardware virtual machine) can be a single instance of an execution environment that executes on a single computer, where the single computer may execute multiple instances of this execution environment. Each environment also runs an operating system (“OS”). One benefit of this configuration is that it can allow applications written for one OS to be executed on a machine which runs a different OS. This configuration also provides execution “sandboxes” which provide a greater level of isolation between processes than is achieved when running multiple processes on the same instance of an OS. Another benefit for multiple users is that each user has the illusion of having an entire computer, one that is their “private” machine, isolated from other users, all on a single physical machine. Yet another advantage is that booting and restarting a virtual machine can be much faster than with a physical machine, since it may be possible to skip tasks such as hardware initialization. Such software is now often referred to with the terms of virtualization and virtual servers. The host software which provides this capability is often referred to as a virtual machine monitor or hypervisor.
Hardware virtual machines have also led to the application virtual machine. The application virtual machine is a type of virtual machine that is a piece of computer software that isolates the application being used by the user from the computer. Because versions of the virtual machine are written for various computer platforms, any application written for the virtual machine can be operated on any of the platforms, instead of having to produce separate versions of the application for each computer and operating system. The application is run on the computer using an interpreter or Just-In-Time compilation. One example of an application virtual machine is Sun Microsystems's Java Virtual Machine.
Another type of virtual machine is a virtual environment. The virtual environment (sometimes referred to as a virtual private server) is another kind of a virtual machine. In fact, it is a virtualized environment for running user-level programs (i.e. not the OS kernel and drivers, but applications). Virtual environments are created using the software implementing operating system level virtualization approach, such as FreeBSD Jails, Linux-VServer, Solaris Containers, and OpenVZ.
When a virtual machine (or environment) is instantiated within a server, the server also initiates a series of maintenance processes for the instantiated virtual machine. These maintenance processes may occupy a processor for a significant amount of time. Moreover, if multiple virtual machines are instantiated substantially simultaneously, the overall processing speed of the server may be reduced due to the simultaneous instantiation of the multiple sets of maintenance processes.